package com.syl.starter.itools.common.annotations;

import com.syl.starter.itools.base.constants.BaseConstant;
import com.syl.starter.itools.common.enums.RoundModeEnum;

import java.lang.annotation.*;

/**
 * 编辑字段 该注解的优先级较@Relevance 低
 * bean 转换注解 配合BeanUtils
 * 该注解必须写在要转换的目标bean字段上
 * 如 A -> B  必须写在B上
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface EditField {
    /**
     * 别名 当2个bean中字段不一致时 以别名来进行映射
     * @return
     */
    String alias() default BaseConstant.EMPTY_STRING;

    /**
     * 格式化 暂时仅支持两种类型的格式化
     * 1是 Date日期格式 格式化字符最好为DateConstant 中定义的
     * 2是 double BigDecimal 格式化 仅支持位数格式化 值最好使用DecimalConstant 中定义的
     */
    String format() default BaseConstant.EMPTY_STRING;

    /**
     * 当格式化小数时有效
     * @return
     */
    RoundModeEnum roundMode() default RoundModeEnum.ROUND;

    /**
     * 给值加前缀
     * @return
     */
    String prefix() default BaseConstant.EMPTY_STRING;

    /**
     * 给值加后缀
     * @return
     */
    String suffix() default BaseConstant.EMPTY_STRING;

    /**
     * get方法前缀
     * @return
     */
    String getPrefix() default BaseConstant.EMPTY_STRING;
}
